package com.yami.shop.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yami.shop.bean.dto.HotTopicDTO;
import com.yami.shop.bean.model.HotTopics;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yami.shop.bean.model.TopicParticipation;
import com.yami.shop.bean.vo.TopicDetailVO;
import com.yami.shop.common.util.PageParam;

import java.util.List;

/**
 * <p>
 * 用于存储社区中的热门话题 服务类
 * </p>
 *
 * @author EXiaoKe
 * @since 2025-04-14
 */
public interface HotTopicService extends IService<HotTopics> {

    /**
     * 根据话题ID获取话题详细信息
     * @param topicId 话题唯一标识符，不能为null
     * @return 话题详细信息视图对象，包含完整的业务字段
     */
    TopicDetailVO getTopicDetail(Long topicId);

    /**
     * 分页查询带帖子列表的热门话题
     * @param page 分页参数对象，包含页码/页大小等分页信息，泛型参数为HotTopics实体类型
     * @param topic 查询条件对象，包含过滤条件的字段信息
     * @return 分页结果对象，包含当前页数据列表和分页信息，数据元素为DTO传输对象
     */
    Page<HotTopicDTO> getTopicWithPosts(PageParam<HotTopics> page, HotTopics topic);


    /**
     * 分页获取所有热门话题信息
     *
     * @return 包含分页结果数据的Page对象，其中HotTopicDTO为热门话题数据传输对象，
     *          包含话题基本信息、参与人数、更新时间等核心字段
     */
    List<HotTopics> getAllTopic();
}
